package com.asion.qkan.ui.util;//

import android.annotation.TargetApi;
import android.graphics.Bitmap;
import android.os.Build;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicBlur;
import android.support.annotation.RequiresApi;

import com.asion.qkan.jiguangtuisong.ExampleApplication;

//
//  现在的努力,坚持和汗水,
//       是为了在未来给我爱的人和爱我的人
//             一个温馨快乐幸福的  家
//
//
public class BlurImage {

    /*
    图片缩放
     */
    public static final float SCALE = 0.4f;
    /*
    最大模糊程度
     */
    public static final float BLURS = 25f;

    /**
     *
     * @param bitmap  图片源
     * @return
     */
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
    @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
    public static Bitmap createBlurBitmap(Bitmap bitmap){
        //计算图片缩放后的宽高度
        int width = Math.round(bitmap.getWidth() * SCALE);
        int height = Math.round(bitmap.getHeight() * SCALE);

        //创建一个缩放后的图片作为渲染图
        Bitmap inputBitmap = Bitmap.createScaledBitmap(bitmap, width, height, false);
        //创建一个输出图片
        Bitmap outBitmap = Bitmap.createBitmap(inputBitmap);

        //创建一个RenderScript内核对象
        RenderScript rs =RenderScript.create(ExampleApplication.context);
        //创建一个模糊器
        ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));

        //由于没有自动给RenderScript分配内存空间，需要用Allocation手动给它分配内存
        Allocation input = Allocation.createFromBitmap(rs, inputBitmap);
        Allocation out = Allocation.createFromBitmap(rs, outBitmap);

        //设置模糊度
        blur.setRadius(BLURS);
        //设置输入内存
        blur.setInput(input);
        //保存输出
        blur.forEach(out);

        //由于新创建的allocation是个空的，则需要使用 copyTo()填充
        out.copyTo(outBitmap);

        return outBitmap;
    }
}
